

cc.Class({
    extends: cc.Component,

    properties: {
        bulletSprites: [cc.SpriteFrame],

    },


    onLoad() {
        this.bulletType = "";


    },

    start() {

    },
    //根据发射子弹的角色，设置子弹的精灵帧
    initSpriteFrame(bulletDt) {
        //修改组件是引用类型，而属性属于值类型，当需要将属性的值修改时，
        // 不能直接获取属性存于变量中，这样在修改变量时是无法改到属性中的值，而只能该变量中的值。
        let bulletSprite = this.node.getComponent(cc.Sprite);
        for (let img of this.bulletSprites) {
            if (bulletDt.img == img.name) {
                bulletSprite.spriteFrame = img;
            }
        }
    },

    // update (dt) {},
    bulletMove(owner) {
        this.owner = owner;
        if (owner === "player" || owner == "pet") {
            //玩家的子弹是向上移动
            cc.tween(this.node)
                .by(1, { position: cc.v2(0, cc.winSize.height) })
                .removeSelf()
                .start()
        } else if (owner === "enemy") {
            //敌机的子弹向下移动
            cc.tween(this.node)
                .by(1, { position: cc.v2(0, -cc.winSize.height) })
                .removeSelf()
                .start()
        }
    },


    /**
    * 当碰撞产生的时候调用  当发生碰撞时会自动调用，不需要手动去调用
    * @param  {Collider} other 产生碰撞的另一个碰撞组件
    * @param  {Collider} self  产生碰撞的自身的碰撞组件
    */
    onCollisionEnter: function (other, self) {
        //玩家的子弹不会把玩家击中，敌机的子弹也不会把敌击中
        if (this.owner === other.node.group) {
            return;
        }
        if ((this.owner == "pet" && other.node.group == "player") || (this.owner == "player" && other.node.group == "pet")) {
            return;
        }
        // 当发生碰撞时，会将子弹自己和被碰撞的飞机都从父节点上移除。
        //self.node.removeFromParent();
        if (other.node.group === "enemy") {
            //子弹击中的是敌机
            other.node.getComponent("Enemy").hurt(this.owner);
        } else if (other.node.group === "player") {
            //子弹击中的是玩家
            other.node.getComponent("Player").playerHurt(false);
        } else if (other.node.group === "bullet") {
            //如果子弹碰撞到子弹，子弹都会销毁
            other.node.removeFromParent();
        }
        this.node.removeFromParent();
    },
});
